package com.tbit.uqbike.object.pojo.dto;

import cn.hutool.core.util.StrUtil;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 车辆监控-运营地图(新)-入参
 * @author <a href="mailto:liu.haoxiang@tbit.com.cn">BUGXiang</a>
 * @version 1.0
 * @since 2025-4-21
 */
@Data
public class OperatingMapMonitoringDTO {


    /**
     * 分页参数 页数
     */
    private Integer page;

    /**
     * 分页参数 条数
     */
    private Integer size;


    /**
     * 区域id
     */
    private Integer accountId;

    /**
     * 分区id 逗号分隔
     */
    private String regionIds;

    /**
     * 分区id列表
     */
    private List<Integer> regionIdList;

    /**
     * 车辆id列表
     */
    private List<Integer> machineIds;

    /**
     * 车辆类型 0-电单车  1-自行车
     */
    private Integer machineType;

    /**
     * 投放状态 0-未投放 1-已投放
     */
    private Integer putStatus;

    /**
     * 骑行状态 0-待租  1-骑行中  2-预约中  3-临停中
     */
    private Integer cyclingStatus;

    /**
     * 故障状态 0-用户标记  1-运维标记 3-短时骑行结束  4-疑似故障
     */
    private Integer faultStatus;

    /**
     * 异常状态 0-超出区域  1-站外  2-无信号 3-电池异常  4-禁停区停车 5-电池未锁 6-摄像头异常 7-头盔异常  8-头盔丢失 10-车辆丢失 11-车辆未关锁 12-无定位时长 13-馈电 14-缺电
     */
    private Integer abnormalStatus;

    /**
     * 无定位时长 abnormalStatus=12
     */
    private Integer noPositionTime;

    /**
     * 订单状态 0-闲置 1-超时长订单 2-无盈利订单  3-无订单时长
     */
    private Integer orderStatus;

    /**
     * 订单状态 配置时间
     */
    private Integer orderTime;

    /**
     * 车辆统计 0-骑行次数 1-骑行里程 2-故障次数 todo 当前不做统计
     */
    private Integer machineStatistics;

    /**
     * 流转状态 0-回收 1-扣押 2-入库  3-跨区
     */
    private Integer circulationStatus;

    /**
     * 换电电量 0-低电 1-中电 2-高电
     */
    private Integer powerStatus;

    /**
     * 车辆标签id 逗号分隔
     */
    private String tagIds;

    /**
     * 标签id列表
     */
    private List<Integer> tagIdList;


    public void conversion(){
        if (StrUtil.isNotBlank(regionIds)){
            this.regionIdList = Arrays.stream(regionIds.split(",")).map(Integer::parseInt).collect(Collectors.toList());
        }
        if (StrUtil.isNotBlank(tagIds)){
            this.tagIdList = Arrays.stream(tagIds.split(",")).map(Integer::parseInt).collect(Collectors.toList());
        }
    }



}
